var ESTACION_HABILITADA = "1";

var flagRecargaEnProceso = false;

$(window).load(function(){
	
	//Ajustar el width de la barra de botones
	var heightTabla = $("#contenido table").width();
	$("#menu .lista-botones").width(heightTabla);
	
	var dayNamesMin = ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'];
	var monthNames = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Setiembre','Octubre','Noviembre','Diciembre'];
	var monthNamesShort = ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Set','Oct','Nov','Dic'];
	
	$("#fechaInicio").datepicker({
		changeMonth: true,
		changeYear: true,
		numberOfMonths: 3,
		dateFormat: 'dd/mm/yy',
		maxDate: '+0d',
		dayNamesMin: dayNamesMin,
		monthNames: monthNames,
		monthNamesShort: monthNamesShort,
		onSelect: function(selectedDate) {
			$("#fechaFin").datepicker("option","minDate",selectedDate);
			$("#fechaFin").val("");
		}
	});
	
	$("#fechaFin").datepicker({
		changeMonth: false,
		numberOfMonths: 3,
		dateFormat: 'dd/mm/yy',
		maxDate: '+0d',
		dayNamesMin: dayNamesMin,
		monthNames: monthNames,
		monthNamesShort: monthNamesShort,
		onSelect: function(selectedDate){}
	});
	
	
	$('input[name=chkMarcarTodos]').attr('checked',false);
	
	$("#dlgResultadosRecarga").dialog("destroy");
	$("#dlgResultadosRecarga").dialog({
		width:480,
		height: 280,
		modal: true,
		autoOpen : false,
		resizable : false,
		title : "Resultados de Recarga"
	});
	
	fnMarcarEstaciones();
});

////////////////////////////
///Funciones para el proceso de recarga////
////////////////////////////
function fnProcesarRecargaDeEstaciones(){
	if(flagRecargaEnProceso){
		alert('Hay un proceso de recarga en ejecuci\u00f3n');
	}else{
		var fechaInicio = $("#fechaInicio").val();
		var fechaFin = $("#fechaFin").val();
		var modoRecarga = $("#modoRecarga").val();
		
		var fechaValidaInicio = false;
		if(fechaInicio!=""){
			fechaValidaInicio = fn_validaFechaDDMMAAAA(fechaInicio);
		}

		var fechaValidaFin = false;
		if(fechaFin!=""){
			fechaValidaFin = fn_validaFechaDDMMAAAA(fechaFin);
		}
		
		var arrayCheckbox = $('#tblEstaciones .checkEstacion');
		var arrayChecked = new Array();

		var objJSONChecked = fnObtenerCheckedNoChecked(arrayCheckbox);
		arrayChecked = objJSONChecked["arrayChecked"];
		
		//Construir un array de flags para saber si se terminaron todas las llamadas de recarga para las estaciones
		var arrayFlagsFinRecarga = new Array();
		for(var i = 0;i<arrayChecked.length;i++){
			var objJSONDatosRecarga = {"finRecarga":false};
			arrayFlagsFinRecarga.push(objJSONDatosRecarga);
		}
		
		if(fechaValidaInicio && fechaValidaFin && arrayChecked.length > 0){

			var i = 0;
			var dim = arrayChecked.length;
			var trFilas = $("#tblEstaciones > tbody").find("tr");
			
			flagRecargaEnProceso = true;
			
			while(i<dim){
				var posicionTabla = arrayChecked[i];
				var tr = $(trFilas).eq(posicionTabla);
				var divDatosEstacion = $(tr).find(".datosEstacion").eq(0);
				var idEstacion = $(divDatosEstacion).attr("data-idEstacion");
				
				var divResultadosRecarga = $(tr).find(".resultadosRecarga").eq(0);
				var imgGifCargando = $(tr).find(".gifCargando").eq(0);
				var btnVerResultados = $(tr).find(".btnVerRecarga").eq(0);

				var objJSONParametros = {"idEstacion":idEstacion,"fechaInicio":fechaInicio,"fechaFin":fechaFin,"modoRecarga":modoRecarga};
				fnRecargarEstacion(objJSONParametros,divResultadosRecarga,imgGifCargando,btnVerResultados,arrayFlagsFinRecarga,i);

				i = i + 1;
			}

		}else{
			if(!fechaValidaInicio){
				alert("Ingrese una fecha de inicio v\u00e1lida");
			}else if(!fechaValidaFin){
				alert("Ingrese una fecha de fin v\u00e1lida");
			}else{
				alert("Debe seleccionar por lo menos una estaci\u00f3n");
			}
		}
	}
}

function fnRecargarEstacion(objJSONParametros,divResultadosRecarga,imgGifCargando,btnVerResultados,arrayFlagsFinRecarga,posicionListadoMarcados){
	
	var objJSONRpta = [];
	var idEstacion = objJSONParametros["idEstacion"];
	var fechaInicio = objJSONParametros["fechaInicio"];
	var fechaFin = objJSONParametros["fechaFin"];
	var modoRecarga = objJSONParametros["modoRecarga"];

	var ruta = RUTA_CONTEXTO + "/recargarEstacion.php";
	
	$(btnVerResultados).attr("style","display:none");
	$(imgGifCargando).removeAttr("style");
	
	$.ajax({
		url: ruta,
		type:'post',
		async: true,
		data:{
			idEstacion:idEstacion,
			fechaInicio:fechaInicio,
			fechaFin:fechaFin,
			modoRecarga:modoRecarga
		},
		dataType:'json',
		success: function(data,textStatus,jqXHR){
	    	
	    	var cssClaseBoton = "";
			if(textStatus == 'success'){
				objJSONRpta = data;
				
				var i = 0;
				var dim = objJSONRpta.length;
				
				var existeError = false;
				while(i<dim && !existeError){
					if(objJSONRpta[i]["tipoRpta"]=="0" || objJSONRpta[i]["tipoRpta"]=="-1"){
						existeError = true;
					}
					i = i + 1;
				}
				
				if(existeError){
					cssClaseBoton = "btn-error";
				}else{
					cssClaseBoton = "btn-correcto";
				}
	        }else{
	        	cssClaseBoton = "btn-error";
	        	objJSONRpta = {"fechaRecarga": fechaInicio + " - "+fechaFin,
	        				   "rptaRecarga":'TextStatus = '+textStatus,
	        				   "tipoRpta":"0"};
	        }
			
			$(divResultadosRecarga).text(JSON.stringify(objJSONRpta));
			$(btnVerResultados).attr("class","btnVerRecarga "+cssClaseBoton);
			$(btnVerResultados).removeAttr("style");
			$(imgGifCargando).attr("style","display:none");
			arrayFlagsFinRecarga[posicionListadoMarcados]["finRecarga"] = true;
			fnVerificarRecargaCompleta(arrayFlagsFinRecarga);
		},
		error: function(jqXHR,textStatus,errorThrown) {
			var mensajeError = fnCapturarErrorJQueryAjax(jqXHR,textStatus);
			objJSONRpta = {"mensajeError":mensajeError};
			arrayFlagsFinRecarga[posicionListadoMarcados]["finRecarga"] = true;
			fnVerificarRecargaCompleta(arrayFlagsFinRecarga);
		}
	});
	
	return objJSONRpta;
}

////////////////////////////
///Funciones utilitarias////
////////////////////////////
function fnMarcarEstaciones(){
	var trFilaVacia = $("#filaVacia");
	
	if(trFilaVacia.length == 0){

		var trFilas = $("#tblEstaciones > tbody").find("tr");
		var checkGeneral = $('input[name=chkMarcarTodos]');
		
		var marcaGeneral = false;
		if($(checkGeneral).is(':checked')){
			marcaGeneral = true;
		}

		for(var i = 0;i<trFilas.length;i++){
			
			var divDatosEstacion = $(trFilas).eq(i).find(".datosEstacion").eq(0);
			var flagEstacionHabilitada = $(divDatosEstacion).attr("data-flagEstacionHabilitada");
			
			var checkBox = $(trFilas).eq(i).find(".checkEstacion").eq(0);
			if(flagEstacionHabilitada == ESTACION_HABILITADA){
				$(checkBox).attr('checked', marcaGeneral);
			}
		}
	}
}

function fnVerResultadosRecarga(a){
	var td = $(a).parent('td');
	var tr = $(td).parent('tr');
	
	var divDatosEstacion = $(tr).find(".datosEstacion").eq(0);
	var codEstacion = $(divDatosEstacion).attr("data-codEstacion");
	var nombreEstacion = $(divDatosEstacion).attr("data-nombreEstacion");
	
	var divResultadosRecarga = $(td).find(".resultadosRecarga").eq(0);
	var textoJSON = $(divResultadosRecarga).text();
	var arrayJSON = jQuery.parseJSON(textoJSON);
	
	var i = 0;
	var dim = arrayJSON.length;
	
	var filas = "";
	while(i<dim){
		var objJSON = arrayJSON[i];
		var fecha = objJSON["fechaRecarga"];
		var rptaRecarga = objJSON["rptaRecarga"];
		
		var nombreImagen = "";
		if(objJSON["tipoRpta"] == "1"){
			nombreImagen = 'check.png';
		}else{
			nombreImagen = 'cross_octagon.png';
		}
		
		var fila = "<tr class='trResultadoRecarga'>" +
						"<td align='center' valign='top'><img src='"+RUTA_CONTEXTO+"/resources/img/"+nombreImagen+"' border='0' width='16' height='16' /></td>"+
						"<td align='center' valign='top'>"+fecha+" : </td>"+
						"<td align='left' valign='top'>"+rptaRecarga+"</td></tr>";
		filas = filas + fila;
		i = i + 1;
	}
	
	$("#filaVaciaResultadosRecarga").remove();
	$("#tblResultadosRecarga > tbody .trResultadoRecarga").remove();
	$("#tblResultadosRecarga > tbody").append(filas);
	$("#dlgResultadosRecarga").dialog("option","title","Recarga "+codEstacion + " - "+nombreEstacion);
	$("#dlgResultadosRecarga").dialog("open");
}

function fnVerificarRecargaCompleta(arrayFlagsFinRecarga){
	var i = 0;
	var dim = arrayFlagsFinRecarga.length;
	var existeRecargaIncompleta = false;
	
	while(i<dim && !existeRecargaIncompleta){
		if(!arrayFlagsFinRecarga[i]["finRecarga"]){
			existeRecargaIncompleta = true;
		}
		i = i + 1;
	}
	
	if(!existeRecargaIncompleta){
		flagRecargaEnProceso = false;
	}
}